DevOps是一種軟體開發方法,為了加強開發和運營團隊之間的協作,以實現更快速的軟體交付和更高的品質。
因為傳統的瀑布流模型(Waterfall Model)只進行一次開發過程的生命週期,包括需求分析、系統設計、開發、整合、系統測試、上線和維護。
但在開發過程中,有可能會發現設計不夠完善、或是與需求有所落差,或歷經數月終於上線之後,使用者該需求已經與當時不同了,等等因素增加了開發風險。
因此,開始促進了Agile敏捷開發的興起,為的是要縮短開發週期,提高部署頻率和更可靠的發佈,高頻率的執行多次的開發生命週期,盡可能的更貼近需求、與開發目標。
所有就有了DevOps的出現,以進一步加速開發和運營之間的協作。
(圖片引用自https://worldtechjournal.com/what-is-devops-all-you-need-to-know/ )
PLAN(規劃): 著重於專案目標和需求。如:需求分析、使用者需求訪談、設計基礎架構、開發時程。
CODE(開發): 開始撰寫程式,根據規劃階段的需求和設計來開發。
BUILD(建置): 開發完成,打包與編譯。
TEST(測試): 確保程式的品質和穩定性。如:單元測試、整合測試等等,確認開發後的程式符合需求。
DEPLOY(部署): 將這個階段完成的版本部署上線使用。
OPERATE(維護): 部署後,持續維護和管理,以確保持續運作。
MONITOR(監控): 使用監視工具來監測性能和運行狀況。
DevOps相關工具主要解決的問題是為了:可以加快系統的快速迭代與部署,並於部署上線後能自動化測試與監控,再於發現到的問題盡快獲得反饋,以利持續維護修復,並迭代新版本。
通常會適合需要「持續交付上線」的系統,非傳統瀑布流,而是採用敏捷開發的系統,需藉由高頻率的持續迭代程式碼,分階段快速的迭代部署上線,就會需要很頻繁的持續部署,此時,如果透過DevOps相關工具的協助,就能大幅縮短手動測試與部署上線的時間。
又或者是微服務架構下的系統,需要同時部署多個服務,管理多個服務的不同版本與監控,使用DevOps也能提供很大的幫助。